diff --git a/src/www/ui/showjobs.php b/src/www/ui/showjobs.php index ac90dcc5..497fa42c 100644 --- a/src/www/ui/showjobs.php +++ b/src/www/ui/showjobs.php @@ -1,227 +1,228 @@ Name = "showjobs"; $this->Title = TITLE_showjobs; $this->MenuOrder = 5; $this->Dependency = array("browse"); $this->DBaccess = PLUGIN_DB_WRITE; global $container; $this->showJobsDao = $container->get('dao.show_jobs'); $this->uploadDao = $container->get('dao.upload'); $this->jobDao = $container->get('dao.job'); parent::__construct(); } function RegisterMenus() { menu_insert("Main::Jobs::My Recent Jobs",$this->MenuOrder -1,$this->Name, $this->MenuTarget); if ($_SESSION[Auth::USER_LEVEL] == PLUGIN_DB_ADMIN) { $URIpart = $this->Name . Traceback_parm_keep(array( "page")) . "&allusers="; menu_insert("Main::Jobs::All Recent Jobs",$this->MenuOrder -2,$URIpart . '1', $this->MenuTarget); if (GetParm("mod", PARM_STRING) == $this->Name){ /* Set micro menu to select either all users or this user */ $allusers = GetParm("allusers",PARM_INTEGER); if ($allusers == 0){ $text = _("Show uploads from all users"); $URI = $URIpart . "1"; }else{ $text = _("Show only your own uploads"); $URI = $URIpart . "0"; } menu_insert("showjobs::$text", 1, $URI, $text); } } } // RegisterMenus() /** * @brief Returns uploadname as link for geeky scan * @param $job_pk * @return uploadname **/ function getUploadNameForGeekyScan($job_pk) { $row = $this->showJobsDao->getDataForASingleJob($job_pk); if (empty($row["job_upload_fk"])){ return ''; } if (empty($row['jq_pk'])){ return _("Job history record is no longer available"); } /* get the upload filename */ $uploadFileName = htmlspecialchars($this->uploadDao->getUpload($row['job_upload_fk'])->getFilename()); if (empty($uploadFileName)){ /* upload has been deleted so try to get the job name from the original upload job record */ $jobName = $this->showJobsDao->getJobName($row["job_upload_fk"]); $uploadFileName = "Deleted " . $jobName; } $uploadtree_pk = -1; /* Find the uploadtree_pk for this upload so that it can be used in the browse link */ try { $uploadtree_pk = $this->uploadDao->getUploadParent($row['job_upload_fk']); }catch (Exception $e) { echo $e->getMessage(), "\n"; } /* upload file name link to browse */ $uploadNameLink = "" . $uploadFileName . ""; return $uploadNameLink; } // getUploadNameForGeekyScan() public function Output() { $page = ""; $uploadPk = GetParm('upload',PARM_INTEGER); if (empty($uploadPk)) { $uploadPk = -1; } elseif($uploadPk>0) { if (!$this->uploadDao->isEditable($uploadPk, Auth::getGroupId())){ - $text = _("Permission Denied"); - return "

$text

"; + $this->vars['message'] = _("Permission Denied"); + return; } } $this->vars['uploadId']= $uploadPk; /* Process any actions */ - if ($_SESSION[Auth::USER_LEVEL] >= PLUGIN_DB_WRITE){ + $action = GetParm("action",PARM_STRING); + if ($_SESSION[Auth::USER_LEVEL] >= PLUGIN_DB_WRITE && !empty($action)){ $jq_pk = GetParm("jobid",PARM_INTEGER); - $action = GetParm("action",PARM_STRING); $uploadPk = GetParm("upload",PARM_INTEGER); if (!($uploadPk === -1 && ($_SESSION[Auth::USER_LEVEL] >= PLUGIN_DB_ADMIN || $this->jobDao->hasActionPermissionsOnJob($jq_pk, Auth::getUserId(), Auth::getGroupId()))) && !$this->uploadDao->isEditable($uploadPk, Auth::getGroupId())) { - $text = _("Permission Denied"); - return "

$text

"; + $this->vars['message'] = _("Permission Denied to perform action"); } - - $page = GetParm('page',PARM_INTEGER) ?: 0; - $thisURL = Traceback_uri() . "?mod=" . $this->Name . "&upload=$uploadPk"; - switch($action) + else { + $page = GetParm('page',PARM_INTEGER) ?: 0; + $thisURL = Traceback_uri() . "?mod=" . $this->Name . "&upload=$uploadPk"; + switch($action) + { case 'pause': if (empty($jq_pk)) break; $command = "pause $jq_pk"; $rv = fo_communicate_with_scheduler($command, $response_from_scheduler, $error_info); if ($rv == false) $this->vars['errorInfo'] = _("Unable to pause job.") . " " . $response_from_scheduler . $error_info; echo ""; break; case 'restart': if (empty($jq_pk)) break; $command = "restart $jq_pk"; $rv = fo_communicate_with_scheduler($command, $response_from_scheduler, $error_info); if ($rv == false) $this->vars['errorInfo'] = _("Unable to restart job.") . " " . $response_from_scheduler . $error_info; echo ""; break; case 'cancel': if (empty($jq_pk)) break; $Msg = "\"" . _("Killed by") . " " . $_SESSION[Auth::USER_NAME] . "\""; $command = "kill $jq_pk $Msg"; $rv = fo_communicate_with_scheduler($command, $response_from_scheduler, $error_info); if ($rv == false) $this->vars['errorInfo'] = _("Unable to cancel job.") . $response_from_scheduler . $error_info; echo ""; break; + } } } $job = GetParm('job',PARM_INTEGER); if (!empty($job)){ $this->vars['jobId'] = $job; $this->vars['uploadName'] = $this->getUploadNameForGeekyScan($job); }else{ $allusersval=GetParm("allusers",PARM_INTEGER); if(!$allusersval) $allusersval = 0; $this->vars['allusersval'] = $allusersval; if(!$page) $page=0; $this->vars['page'] = $page; $this->vars['clockTime'] = $this->getTimeToRefresh(); $this->vars['allusersdiv'] = menu_to_1html(menu_find($this->Name, $MenuDepth),0); $this->vars['injectedFoot'] = GetParm("injectedFoot",PARM_TEXT); $this->vars['message'] = GetParm("injectedMessage",PARM_TEXT); } } /** * @brief getTimeToRefresh() get the refresh time from DB. * @Returns time in seconds to refresh the jobs. **/ public function getTimeToRefresh() { global $SysConf; return $SysConf['SYSCONFIG']['ShowJobsAutoRefresh']; } /* getTimeToRefresh() */ public function getTemplateName() { $job = GetParm('job', PARM_INTEGER); if (empty($job)) { return "ui-showjobs.html.twig"; } else { return "ui-job-show.html.twig"; } } } $NewPlugin = new showjobs; $NewPlugin->Initialize();